//
//  XGCategoryData.m
//  新闻
//
//  Created by 小果 on 16/3/30.
//  Copyright © 2016年 小果. All rights reserved.
//

#import "XGCategoryData.h"
#import "NSString+Dir.h"

extern NSString * const kNewsCategoryDataFile;

@implementation XGCategoryData
#pragma mark 返回分类数据列表
+ (NSArray *)categoryDataList
{
    // 从Mainbundle中加载数据列表
    // 新的需求，用户调整完分类列表之后，数据需要保存
    // 在真机运行时，MainBundle中的数据是只读的
    
    // 1. 生成缓存路径
    NSString *cachePath =[kNewsCategoryDataFile appendCacheDir];
    
    // 2. 判断文件是否存在
    if (![[NSFileManager defaultManager] fileExistsAtPath:cachePath]) {
        // 1> 将MainBundle中的数据文件复制到Cache文件夹
        NSString *bundlePath = [kNewsCategoryDataFile appendMainBundleDir];
        
        // 2> 复制文件
        [[NSFileManager defaultManager] copyItemAtPath:bundlePath toPath:cachePath error:nil];
    }
    
    // 3. 加载cachePath中的文件
    NSData *jsonData = [NSData dataWithContentsOfFile:cachePath];
    NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil];
    
    // 4. 填充数组
    NSMutableArray *arrayM = [NSMutableArray arrayWithCapacity:array.count];
    
    [array enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop) {
        XGCategoryData *data = [[XGCategoryData alloc] init];
        [data setValuesForKeysWithDictionary:dict];
        
        [arrayM addObject:data];
    }];
    
    return arrayM;
}

#pragma mark - 将数组内容保存至JSON文件（文本文件）
+ (void)saveCategoryDataList:(NSArray *)list
{
    // 在iOS并没有提供JSON的序列化功能
    // list中，保存的是定义的NCCategoryData
    NSMutableString *strM = [NSMutableString string];
    
    [strM appendString:@"[\n"];
    for (XGCategoryData *data in list) {
        // 依次生成JSON字典
        [strM appendString:@"\t{\n"];
        [strM appendFormat:@"\t\"categoryName\": \"%@\",\n", data.categoryName];
        [strM appendFormat:@"\t\"categoryURL\": \"%@\",\n", data.categoryURL];
        [strM appendFormat:@"\t\"selected\": \"%d\",\n", data.couldMove];
        [strM appendFormat:@"\t\"couldMove\": \"%d\",\n", data.couldMove];
        
        [strM appendString:@"\t},\n"];
    }
    
    [strM appendString:@"]"];
    
    // 写入文件
    NSString *cachePath = [kNewsCategoryDataFile appendCacheDir];
    [strM writeToFile:cachePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

- (NSString *)description
{
    return [NSString stringWithFormat:@"<NCCategoryData: %p, categoryName: %@, categoryURL: %@, selected: %d couldMove: %d>", self, _categoryName, _categoryURL, _selected, _couldMove];
}

@end
